With the advent and explosion of the Internet, huge numbers of computers have become networked together, with additional computers becoming connected each day. A connection to the Internet provides access to vast information resources in the form of the world wide web (“WWW”), communications resources in the form of electronic mail (“e-mail”), and a virtually limitless variety of other data and communications resources. In most cases, these resources are provided using a client-server infrastructure, whereby a central server computer provides the bulk of the required computing resources to a relatively large number of client computers.
Other types of network services rely on a peer-to-peer (“P2P”) network infrastructure. In a P2P network, the computing power and bandwidth of participants in the network is utilized rather than concentrating it in a relatively low number of server computers. P2P networks are useful for many purposes, including instant messaging (“IM”), collaboration, content distribution, distributed processing, games, file sharing, and others. In a P2P network, the individual computers in the network, also referred to as nodes or peers, connect directly one another. In many cases, a P2P network may comprise an ad-hoc network created between just two nodes.
One difficulty that arises when setting up an ad-hoc P2P network stems from the fact that in order to establish a connection, it is typically necessary for one of the nodes to have network endpoint information for the other node. For instance, if two users want to play a network-capable multiplayer game, one user must know the network address of the other computer node in order to establish the connection. In another example, a remote assistance program may be utilized to allow a remote user to connect to a local node and to provide assistance with the computer to a user of the local node. In order to allow the remote user to connect, however, the network address of the local node must be determined and provided to the remote user. In situations like these, a user of one of the nodes typically determines the network address of their own computer and then transmits the network address to the other user. This process can be difficult and time consuming, especially for users that are not technically savvy or familiar with the process for determining the network address of a computer.
It is with respect to these considerations and others that aspects of a computing system for resolving a name to a network address are described below.